home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / programming / aros / exec / setsignal.c < prev    next >
C/C++ Source or Header  |  1996-09-12  |  2KB  |  80 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: setsignal.c,v 1.4 1996/08/13 13:56:08 digulla Exp $
  4.     $Log: setsignal.c,v $
  5.     Revision 1.4  1996/08/13 13:56:08  digulla
  6.     Replaced __AROS_LA by __AROS_LHA
  7.     Replaced some __AROS_LH*I by __AROS_LH*
  8.     Sorted and added includes
  9.  
  10.     Revision 1.3  1996/08/01 17:41:19  digulla
  11.     Added standard header for all files
  12.  
  13.     Desc:
  14.     Lang: english
  15. */
  16. #include <exec/execbase.h>
  17. #include <aros/libcall.h>
  18.  
  19. /*****************************************************************************
  20.  
  21.     NAME */
  22.     #include <clib/exec_protos.h>
  23.  
  24.     __AROS_LH2(ULONG, SetSignal,
  25.  
  26. /*  SYNOPSIS */
  27.     __AROS_LHA(ULONG, newSignals, D0),
  28.     __AROS_LHA(ULONG, signalSet,  D1),
  29.  
  30. /*  LOCATION */
  31.     struct ExecBase *, SysBase, 51, Exec)
  32.  
  33. /*  FUNCTION
  34.     Change or read the set of signals sent to the current task.
  35.  
  36.     INPUTS
  37.     newSignals - New values for the signals.
  38.     signalSet  - Mask of signals affected by 'newSignals'.
  39.  
  40.     RESULT
  41.     Old signal set.
  42.  
  43.     NOTES
  44.  
  45.     EXAMPLE
  46.  
  47.     BUGS
  48.  
  49.     SEE ALSO
  50.     AllocSignal(), FreeSignal(), Wait(), Signal(), SetExcept()
  51.  
  52.     INTERNALS
  53.  
  54.     HISTORY
  55.  
  56. ******************************************************************************/
  57. {
  58.     __AROS_FUNC_INIT
  59.  
  60.     ULONG *sig;
  61.     ULONG old;
  62.  
  63.     /* Protect the signal mask against access by other tasks. */
  64.     Disable();
  65.  
  66.     /* Get address */
  67.     sig=&SysBase->ThisTask->tc_SigRecvd;
  68.  
  69.     /* Change only the bits in 'mask' */
  70.     old=*sig;
  71.     *sig=(old&~signalSet)|(newSignals&signalSet);
  72.  
  73.     Enable();
  74.  
  75.     return old;
  76.     __AROS_FUNC_EXIT
  77. }
  78.  
  79.  
  80.